This invention relates to software tools for creating and modifying software applications, and is particularly applicable to creating and modifying Web applications such as those with Java applets and applications.
The Internet is a large network that connects many thousands of computers together. It is a heterogeneous network because many different types of computers are connected. The computers all use the TCP/IP protocol to communicate. This means that a PC can communicate just as easily with a MAC as well as another PC. There are lots of different applications on the Internet. One of the most widely used is the World Wide Web WWW). This application consists of two parts, a web browser and a web server. The web browser typically runs on a desktop computer, such as a PC or MAC. The web server typically runs on a server computer, such as an HP or IBM mainframe. Today, the primary purpose of this application is to transmit web pages from the web server to the web browser. Today there are tens of thousands of networks connected to the Internet with millions of host computers and tens of millions of users world wide accessing tens of millions of web pages. The WWW can also be used to execute applications inside these web pages. When a web page is received by a web browser and an application is referenced or contained in the web page, the web browser will execute that application.
Intranets are internal company networks that utilize the technologies of the Internet. These networks are maintained by the company in which they are contained. Companies will either maintain these networks directly or outsource the maintenance to service providers.
Extranets are networks created between companies. These networks are private to the connected companies. These networks are maintained by one or more of the connecting companies or by an outside service provider.
Applications in web pages work well when created with a new Java programming language from Sun Microsystems that was introduced in 1995. Java is a programming language for Internet/lntranet/Extranet applications and particularly for the World Wide Web application. Java is an object-oriented programming language. With the exception of simple types like numbers and booleans, most things in Java are objects. However, even those simple types have object wrappers. Java code is organized into classes where each class defines a set of methods that form the behavior of an object. A class can inherit behaviors from another class. Java source programs are compiled into files which contain byte-code representations of the program. Byte-codes are similar to machine instructions so that the Java programs will be very efficient. Byte-codes are not specific to a particular machine so programs can execute in lots of different computers without re-compiling the program. In a Java byte-code file, all references to classes, methods and variables are made by name and are resolved when the code is first executed. The Java byte-codes are executed by a Java Virtual Machine. The Java Virtual Machine normalizes the computer-specific operations for the byte-codes. Because there are so many computer systems connected to each other, there is a need for a language that is not tied to a specific platform to exchange programs. Java is ideal for this purpose. The Java programs are transmitted as byte-codes, which means that they can run on any computer without having to be compiled. It is possible to download a Java program into any computer on the Internet/Intranet/Extranet and execute it without worrying about the system in which the program was developed.
Applications referenced in a web page and written in the Java programming language are called Java applets. The web browser contains the Java Virtual Machine. When the user accesses these pages, the applets are downloaded to their computers and handed to the Java Virtual Machine to execute. Many web browsers contain the Java Virtual Machine. Sun Microsystems provides one such browser called Hot Java. Netscape provides another browser called Navigator. Microsoft provides another browser called Internet Explorer. All contain the Java Virtual Machine and can execute Java applets.
Java can also be used to create traditional applications. Applications such as Microsoft Word, Corel Wordperfect and company client/server applications could be created with Java. Many companies have announced plans to include the Java Virtual Machine in PCs, MACs, mainframes and other computers. Applications written in Java will be able to execute on these computers just as traditional applications can run on PCs, MACs and mainframes today.
Java can also be used to create embedded applications. Applications such as those found in cellular phones, televisions, and other devices could be created with Java. Many companies have announced plans to include the Java Virtual Machine in devices.
Many software tools exist today that can create Java applets and applications. These tools read Java source programs, create information data bases about the programs and generate Java byte-odes. Some even allow the Java byte-codes to be modified while they are executing, provided the execution is being done inside the tool. They perform these changes by referring to their information data bases and patching the byte-codes with the changed information. One of the drawbacks to this method is the requirement to always keep the Java source programs and the information data bases available and make the changes in the tool. Many times the information data bases are quite large and require extra disk storage to make them available. Furthermore, there are additional steps required to synchronize and track the Java byte-codes with the Java source programs and information data bases to ensure the Java byte-codes can be maintained.
These software tools are similar to tools for other languages, such as Visual Basic, C++ and COBOL. It is highly desirable to provide a capability that can eliminate the drawbacks of traditional software tools to help reduce the development cycle time and increase the maintainability of the executing applications.
In accordance with one embodiment of the present invention, there is described an engine in an application which gives users/developers of the application the ability to modify the application while the application is running.
These and other features of the invention that will be apparent to those skilled in the art from the following detailed description of the invention, taken together with the accompanying drawings.